//
//  HMStatusListViewModel.swift
//  MicroBlog
//
//  Created by Apple on 16/9/23.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit
import SDWebImage
//封装首页微博数据网络请求
class HMStatusListViewModel: NSObject {
    //关注用户的数据源
    lazy var statusList: [HMStatusViewModel] = [HMStatusViewModel]()
    //加载首页微博数据
    func loadData(isPullup: Bool, callBack: @escaping (Bool, String)->()) {
        let accessToken = HMUserAccountViewModel.sharedUserAccountViewModel.accessToken!
        //上拉加载请求的微博id
        var maxId: Int64 = 0
        //下拉刷新请求的微博id
        var sinceId: Int64 = 0
        if isPullup {
            //上拉加载
            maxId = statusList.last?.status?.id ?? 0
            //解决数据重复问题
            if maxId > 0 {
                maxId -= 1
            }
        } else {
            //下拉刷新
            sinceId = statusList.first?.status?.id ?? 0
        }
        var message: String = "没有加载到最新微博数据"
        HMStatusDAL.loadData(accessToken: accessToken, maxId: maxId, sinceId: sinceId) { (statusArray) in
            //yymodel字典转模型
            let modelArray =  NSArray.yy_modelArray(with: HMStatus.self, json: statusArray) as! [HMStatus]
            var tempArray = [HMStatusViewModel]()
            //调度组
            let group = DispatchGroup()
            //遍历模型数组
            for statusValue in modelArray {
                let viewModel = HMStatusViewModel(status: statusValue)
                tempArray.append(viewModel)
                //判断是否有单张图片
                if statusValue.pic_urls?.count == 1 {
                    //原创微博配图为1张,需要下载
                    if let url = statusValue.pic_urls?.first?.thumbnail_pic {
                        //调度组中执行下载
                        group.enter()
                        SDWebImageManager.shared().downloadImage(with: URL(string: url), options: [], progress: nil, completed: { (image, error, _, _, url) in
                            //下载完成
                            print("下载完成,\(url)")
                            group.leave()
                        })

                        
                    }
                }
                
                //转发微博配图
                if statusValue.retweeted_status?.pic_urls?.count == 1 {
                    //原创微博配图为1张,需要下载
                    if let url = statusValue.pic_urls?.first?.thumbnail_pic {
                        group.enter()
                        SDWebImageManager.shared().downloadImage(with: URL(string: url), options: [], progress: nil, completed: { (image, error, _, _, url) in
                            //下载完成
                            print("下载完成,\(url)")
                            group.leave()
                        })
                    }
                }
            }
            
            if isPullup {
                //上拉加载
                self.statusList.append(contentsOf: tempArray)
            } else {
                //下拉刷新
                self.statusList.insert(contentsOf: tempArray, at: 0)
            }
            //判断服务器返回的数据个数
            if tempArray.count > 0 {
                message = "加载了\(tempArray.count)条数据"
            }
            //要想执行数据回调,前提是单张图片全部下载完成之后才能调用
            //使用调度组,等待任务完成后才回调
            //记录返回数组模型,刷新UI
            group.notify(queue: DispatchQueue.main, execute: {
                print("全部下载完成")
                callBack(true,message)
            })
        }
    }
    
}
